---@meta _

---@class AceHook-2.1 提供安全的函数、方法和脚本钩子。AceHook-2.0 已弃用，推荐使用 AceHook-2.1
---[文档](https://web.archive.org/web/20071218172011/http://www.wowace.com/wiki/AceHook-2.1)
---@field hooks table 钩子表
local AceHook = {}

---
---钩子
--- `("function" [, handler] [, hookSecure])`
--- `(object, "method" [, handler] [, hookSecure])`
---
---@param object string|table 函数名称或实例对象
---@param method string|function 函数名、函数、方法名
---@param handler? string|function|nil 函数名、函数、方法名
---@param hookSecure? boolean|nil 钩子安全
function AceHook:Hook(object, method, handler, hookSecure) end

---钩子脚本
---@param frame table|string 对象或对象名
---@param script string 脚本
---@param handler? table|function|nil 处理对象或处理函数
function AceHook:HookScript(frame, script, handler) end

---安全钩子
--- `("function", handler)`
--- `(object, "method", handler)`
---@param object string|table 方法名称或实例对象
---@param method string|function|nil 函数名、函数、方法名
---@param handler? string|function|nil 函数名、函数、方法名
function AceHook:SecureHook(object, method, handler) end

---解除钩子
--- `sUnhook("function")`
--- `(object, "method")`
---@param obj string|table 函数名或对象
---@param method? string 方法名
function AceHook:Unhook(obj, method) end

---从调用源取消所有活动挂钩	
function AceHook:UnhookAll() end

---列出此源中已注册的钩子
function AceHook:HookReport() end

---是否已挂钩
--- `("function")`
--- `(object, "method")`
---@param obj string 对象名称或对象名称
---@param method string 方法名称
---@return boolean hooked 已挂钩
---@return any handler
function AceHook:IsHooked(obj, method) end

